/**
 * 消息推送
 * @constructor
 */
var editor = null
function News() {

}

News.init = function () {

    editor = new window.wangEditor('#wangEditor1')
    editor.customConfig.uploadImgServer = '/image/upload'
    editor.customConfig.uploadImgMaxLength = 1
    editor.customConfig.withCredentials = true
    editor.customConfig.uploadImgTimeout = 30000
    editor.create();

    getAuth();
    initCity();
    initDistrict(null);
    initTown(null);

    $('#tableList').bootstrapTable({
        url: '/news/tableSearch',
        method: 'post',
        striped: true, //是否显示行间隔色
        toolbar: "#toolbar",
        sidePagination: "true",
        dataField: "data",//这是返回的json数组的key.默认是"rows".这里只有前后端约定好就行
        showToggle: true, //是否显示详细视图和列表视图的切换按钮
        striped: true, // 是否显示行间隔色
//search : "true",
        uniqueId: "id",
        pageList: [5, 10, 20, 50, 100],//可选择单页记录数
        pageSize: "10",
        pagination: true, // 是否分页
        sortable: true, // 是否启用排序
        sidePagination: 'server', // 设置为服务器端分页     客户端：client
        search: false,
        showColumns: true,
        showRefresh: true,
        showExport: true,
//得到查询的参数
        queryParams: function (params) {
//这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
            var query_params = {
//********table的参数 不变
                pageSize: params.limit,                         //页面大小
                pageIndex: (params.offset / params.limit) + 1,   //页码
                sort: params.sort,      //排序列名
                sortOrder: params.order, //排位命令（desc，asc）
//********
//获取查询的对象，往下加入
                title: $('#search_title').val(), // 请求时向服务端传递的参数

                authCity: $("#cityCondition").val(),
                authDistrict: $("#districtCondition").val(),
                authTown: $("#townCondition").val(),
            };
            return query_params;
        },
        columns: [
            {
//field: 'Number',//可不加
                title: '序号',//标题  可不加
                align: "center",
                width: 40,
                formatter: function (value, row, index) {
                    var pageSize = $('#tableList').bootstrapTable('getOptions').pageSize;//通过表的#id 可以得到每页多少条
                    var pageNumber = $('#tableList').bootstrapTable('getOptions').pageNumber;//通过表的#id 可以得到当前第几页
                    return pageSize * (pageNumber - 1) + index + 1;//返回每条的序号： 每页条数 * （当前页 - 1 ）+ 序号
                }
            },
            {field: 'title', title: '标题', align: 'center'},
            {field: 'showContent', title: '内容', align: 'center'},
            {field: 'authRegion', title: '推送区域', align: 'center'},
            {field: 'rolesName', title: '推送对象', align: 'center'},
            {field: 'userName', title: '创建人', align: 'center'},
            {field: 'createTime', title: '创建时间', align: 'center'},
            {
                title: '操作',
                align: 'center',
                formatter: function (value, row, index) {
                    var optionHtml = "";
                    optionHtml = optionHtml + "<a class=\"btn btn-info btn-xs\" href=\"javascript:void(0)\"  onclick='actionRecord(" + JSON.stringify(row) + ",\"view\")'  title=\"查看\"><i class=\"fa fa-search\"></i>查看</a>"
                    optionHtml = optionHtml + " <a class=\"btn btn-success btn-xs\"  href=\"javascript:void(0)\"  onclick='actionRecord(" + JSON.stringify(row) + ",\"edit\")' title=\"修改\" ><i class=\"fa fa-edit\"></i>修改</a>";
                    optionHtml = optionHtml + " <a class=\"btn btn-danger btn-xs\" href=\"javascript:void(0)\"  onclick='actionRecord(" + JSON.stringify(row) + ",\"delete\")'  title=\"删除\"><i class=\"fa fa-remove\"></i>删除</a>";
                    optionHtml = optionHtml + " <a class=\"btn btn-warning btn-xs\" href=\"javascript:void(0)\"  onclick='actionRecord(" + JSON.stringify(row) + ",\"push\")'  title=\"推送情况\"><i class=\"fa\"></i>推送情况</a>";
                    return optionHtml;
                }
            }
        ]
    });
}


//查询方法****************************
function doSearch() {
// $('#tableList').bootstrapTable(('refresh')); // 很重要的一步，刷新url！
    $("#tableList").bootstrapTable("refreshOptions", {pageNumber: 1});
}

//重置****************************
function doRest() {
    $("#search_title").val("");
// $('#tableList').bootstrapTable(('refresh')); // 很重要的一步，刷新url！
    $("#tableList").bootstrapTable("refreshOptions", {pageNumber: 1});
}

//增加方法****************************
var Action = "";
var id = 0;
var pxt = "/news"; //控制器名称
function addRecord() {
    id = 0;
    Action = "add";
    editor.txt.html('')
    $("#myform")[0].reset();
    $("#text_status").val(-1);
}

//增加/修改数据保存****************************
function saveRecord() {
    if (!validateForm()) return false;
    let roles = "";
    $.each($('#test input[type=checkbox]:checked'), function () {
        roles += $(this).val() + ",";
    });
    roles = roles.substring(0, roles.length - 1);
//创建传递的参数
    var postdata = {
        id: id,
        action: Action,
        content: editor.txt.html(),
        title: $("#text_title").val(),
        roles: roles,
        status: $("#text_status").val()
    };
// console.log(JSON.stringify(postdata));
//发送异步请求到后台保存用户数据
    $.ajax({
        url: pxt + (Action == "add" ? "/save" : "/update"),
        type: "post",
        data: JSON.stringify(postdata),
        contentType: "application/json",
        dataType: "json",
        success: function (data) {
            if (data.code === "200") {
                $('#myModalAdd').modal('hide')
                doSearch();
                swal("操作成功!", "请继续操作", "success");
            } else {
                swal("操作失败!", "请重试", "error");
            }
        }
    });
}

//操作相关方法****************************
function actionRecord(data, type) {
    if (type == "edit") {
//修改
        id = data.id;
        Action = "edit";
        $("#myform")[0].reset();

        $("#save").removeAttr("disabled");
        WriteData(data)
        $('#myModalAdd').modal('show')
    }else   if (type == "view") {
        $('#title').html(data.title);
        $('#myContent').html(data.content);
        $('#publisher').text(data.userName);
        $('#publisheTime').text('       '+data.createTime);
        $('#myModalView').modal('show')
    }   else if (type == "push"){
        $(location).prop("href","/news/push/"+data.id);
    }else {
//删除
        swal({
            title: "确认是否删除",
            text: "是否确认要删除该条记录？",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "删除",
            cancelButtonText: "取消",
            closeOnConfirm: false
        }, function () {
//点击删除之后此处进行传递后台
            $.ajax({
                type: "delete",
                url: pxt + "/deleteById/" + data.id,
                dataType: "json",
                contentType: "application/json",
                success: function (data, status) {
                    if (data.code == "200") {
                        doSearch();
                        swal("删除成功!", "请继续操作", "success");
                    } else {
                        swal("删除失败!", "请重试", "error");
                    }
                }
            });

        });
    }
}

//给控件赋值****************************
function WriteData(data) {

    $("#text_title").val(data.title);
    editor.txt.html(data.content||'')
    /**
     * 无法全部清空再赋值
     */
    $("#test input[type=checkbox]").prop("checked",false);
    $.each(data.roles.split(","),function (index,object) {
        $.each($('#test input[type=checkbox]'), function () {
            if (object == $(this).val()){
                $(this).prop("checked",true);
            }
        });
    })
}

//表单验证*****************************
function validateForm() {
//validate方法参数可选
    return $("#myform").validate({
        rules: {
            text_title: {
                required: true,//必填
                minlength: 1, //最少1个字符
                maxlength: 50,//最多50个字符
                // number: true, //必须是数字
            },
            text_roles: {
                required: true,//必填
                minlength: 1, //最少1个字符
                maxlength: 50,//最多50个字符
                // number: true, //必须是数字
            }
        },
//错误信息提示
        messages: {
            text_title: {
                required: "(必填)",
                minlength: 1, //最少1个字符
                maxlength: 50,//最多50个字符
                // number: true, //必须是数字
            },
            text_roles: {
                required: "(必填)",
                minlength: 1, //最少1个字符
                maxlength: 50,//最多50个字符
                // number: true, //必须是数字
            }
        },
    }).form();

}

let cityCondition;
let districtCondition;
let townCondition;
//权限控制
function getAuth() {
    let url = "/UserManage/getAuth";
    $.ajax({
        type: "Post",
        url: url,
        dataType : "json",
        contentType: "application/json",
        async:false,
        success: function (data, status) {
            if (data.code === "200") {
                //判断用户权限
                if (data.data.authType == 1) { // 地市权限
                    // city: true,
                    // district: true,
                    // town: true
                    cityCondition = data.data.authCity;
                    $("#districtCondition").removeAttr("disabled");
                    $("#townCondition").removeAttr("disabled");
                }else if (data.data.authType == 2){ //区县权限
                    cityCondition = data.data.authCity;
                    districtCondition = data.data.authDistrict;
                    $("#townCondition").removeAttr("disabled");
                }else if (data.data.authType == 3){ //乡镇权限
                    cityCondition = data.data.authCity;
                    districtCondition = data.data.authDistrict;
                    townCondition = data.data.authTown;
                }
            }
        }
    });
}
/**
 * 初始化地市
 */
function initCity(){
    let url = "/city/getAllCity"
    $.ajax({
        type: "Get",
        url: url,
        dataType : "json",
        contentType: "application/json",
        success: function (data, status) {
            //清空下拉列表
            $("#cityCondition").empty();
            //添加默认项
            $("#cityCondition").append("<option value=\"-1\">-- 地市 --</option>");
            $.each(data,function (index,item) {
                if (item.city_id == cityCondition){
                    $("#cityCondition").append("<option selected value='" + item.city_id + "'>" + item.city_name + "</option>");
                }else {
                    $("#cityCondition").append("<option value='" + item.city_id + "'>" + item.city_name + "</option>");
                }
            })
        }
    });
}
/**
 * 初始化区县
 */
function initDistrict(city_id){
    if (city_id == null){
        city_id = cityCondition;
    }
    let url = "/district/getDistrictByCity?city_id="+city_id;
    $.ajax({
        type: "Get",
        url: url,
        dataType : "json",
        contentType: "application/json",
        success: function (data, status) {
            //清空下拉列表
            $("#districtCondition").empty();
            //添加默认项
            $("#districtCondition").append("<option value=\"-1\">-- 区县 --</option>");
            $.each(data,function (index,item) {
                if (item.district_id == districtCondition){
                    $("#districtCondition").append("<option selected value='" + item.district_id + "'>" + item.district_name + "</option>");
                }else {
                    $("#districtCondition").append("<option value='" + item.district_id + "'>" + item.district_name + "</option>");
                }
            })
        }
    });
}
/**
 * 初始化乡镇
 */
function initTown(district_id){
    if (district_id == null){
        district_id = districtCondition;
    }
    let url = "/town/getTownByDistrict?district_id="+district_id;
    $.ajax({
        type: "Get",
        url: url,
        dataType : "json",
        contentType: "application/json",
        success: function (data, status) {
            //清空下拉列表
            $("#townCondition").empty();
            //添加默认项
            $("#townCondition").append("<option value=\"-1\">-- 乡镇 --</option>");
            $.each(data,function (index,item) {
                if (item.town_id == townCondition){
                    $("#townCondition").append("<option selected value='" + item.town_id + "'>" + item.town__name + "</option>");
                }else {
                    $("#townCondition").append("<option value='" + item.town_id + "'>" + item.town__name + "</option>");
                }
            })
        }
    });
}
//根据区县查询到对应的乡镇
$("#districtCondition").change(function () {
    initTown($(this).val());
})
